//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------

function write(v) { WScript.Echo(v + ""); }

function foo() {}

write(new String('he' + 'llo') * new Object());
write(new String('he' + 'llo') * new Object());
write(new String('he' + 'llo') * [1, 2, 3]);
write(new String('he' + 'llo') * [1 ,2 , 3]);
write(new String('he' + 'llo') * new Array(3));
write(new String('he' + 'llo') * Array(3));
write(new String('he' + 'llo') * new Array(1 ,2 ,3));
write(new String('he' + 'llo') * Array(1));
write(new String('he' + 'llo') * foo);
write(new Object() * undefined);
write(new Object() * null);
write(new Object() * true);
write(new Object() * false);
write(new Object() * Boolean(true));
write(new Object() * Boolean(false));
write(new Object() * new Boolean(true));
write(new Object() * new Boolean(false));
write(new Object() * NaN);
write(new Object() * +0);
write(new Object() * -0);
write(new Object() * 0);
write(new Object() * 0.0);
write(new Object() * -0.0);
write(new Object() * +0.0);
write(new Object() * 1);
write(new Object() * 10);
write(new Object() * 10.0);
write(new Object() * 10.1);
write(new Object() * -1);
write(new Object() * -10);
write(new Object() * -10.0);
write(new Object() * -10.1);
write(new Object() * Number.MAX_VALUE);
write(new Object() * Number.MIN_VALUE);
write(new Object() * Number.NaN);
write(new Object() * Number.POSITIVE_INFINITY);
write(new Object() * Number.NEGATIVE_INFINITY);
write(new Object() * new Number(NaN));
write(new Object() * new Number(+0));
write(new Object() * new Number(-0));
write(new Object() * new Number(0));
write(new Object() * new Number(0.0));
write(new Object() * new Number(-0.0));
write(new Object() * new Number(+0.0));
write(new Object() * new Number(1));
write(new Object() * new Number(10));
write(new Object() * new Number(10.0));
write(new Object() * new Number(10.1));
write(new Object() * new Number(-1));
write(new Object() * new Number(-10));
write(new Object() * new Number(-10.0));
write(new Object() * new Number(-10.1));
write(new Object() * new Number(Number.MAX_VALUE));
write(new Object() * new Number(Number.MIN_VALUE));
write(new Object() * new Number(Number.NaN));
write(new Object() * new Number(Number.POSITIVE_INFINITY));
write(new Object() * new Number(Number.NEGATIVE_INFINITY));
write(new Object() * '');
write(new Object() * 0xa);
write(new Object() * 04);
write(new Object() * 'hello');
write(new Object() * 'hel' + 'lo');
write(new Object() * String(''));
write(new Object() * String('hello'));
write(new Object() * String('h' + 'ello'));
write(new Object() * new String(''));
write(new Object() * new String('hello'));
write(new Object() * new String('he' + 'llo'));
write(new Object() * new Object());
write(new Object() * new Object());
write(new Object() * [1, 2, 3]);
write(new Object() * [1 ,2 , 3]);
write(new Object() * new Array(3));
write(new Object() * Array(3));
write(new Object() * new Array(1 ,2 ,3));
write(new Object() * Array(1));
write(new Object() * foo);
write(new Object() * undefined);
write(new Object() * null);
write(new Object() * true);
write(new Object() * false);
write(new Object() * Boolean(true));
write(new Object() * Boolean(false));
write(new Object() * new Boolean(true));
write(new Object() * new Boolean(false));
write(new Object() * NaN);
write(new Object() * +0);
write(new Object() * -0);
write(new Object() * 0);
write(new Object() * 0.0);
write(new Object() * -0.0);
write(new Object() * +0.0);
write(new Object() * 1);
write(new Object() * 10);
write(new Object() * 10.0);
write(new Object() * 10.1);
write(new Object() * -1);
write(new Object() * -10);
write(new Object() * -10.0);
write(new Object() * -10.1);
write(new Object() * Number.MAX_VALUE);
write(new Object() * Number.MIN_VALUE);
write(new Object() * Number.NaN);
write(new Object() * Number.POSITIVE_INFINITY);
write(new Object() * Number.NEGATIVE_INFINITY);
write(new Object() * new Number(NaN));
write(new Object() * new Number(+0));
write(new Object() * new Number(-0));
write(new Object() * new Number(0));
write(new Object() * new Number(0.0));
write(new Object() * new Number(-0.0));
write(new Object() * new Number(+0.0));
write(new Object() * new Number(1));
write(new Object() * new Number(10));
write(new Object() * new Number(10.0));
write(new Object() * new Number(10.1));
write(new Object() * new Number(-1));
write(new Object() * new Number(-10));
write(new Object() * new Number(-10.0));
write(new Object() * new Number(-10.1));
write(new Object() * new Number(Number.MAX_VALUE));
write(new Object() * new Number(Number.MIN_VALUE));
write(new Object() * new Number(Number.NaN));
write(new Object() * new Number(Number.POSITIVE_INFINITY));
write(new Object() * new Number(Number.NEGATIVE_INFINITY));
write(new Object() * '');
write(new Object() * 0xa);
write(new Object() * 04);
write(new Object() * 'hello');
write(new Object() * 'hel' + 'lo');
write(new Object() * String(''));
write(new Object() * String('hello'));
write(new Object() * String('h' + 'ello'));
write(new Object() * new String(''));
write(new Object() * new String('hello'));
write(new Object() * new String('he' + 'llo'));
write(new Object() * new Object());
write(new Object() * new Object());
write(new Object() * [1, 2, 3]);
write(new Object() * [1 ,2 , 3]);
write(new Object() * new Array(3));
write(new Object() * Array(3));
write(new Object() * new Array(1 ,2 ,3));
write(new Object() * Array(1));
write(new Object() * foo);
write([1, 2, 3] * undefined);
write([1, 2, 3] * null);
write([1, 2, 3] * true);
write([1, 2, 3] * false);
write([1, 2, 3] * Boolean(true));
write([1, 2, 3] * Boolean(false));
write([1, 2, 3] * new Boolean(true));
write([1, 2, 3] * new Boolean(false));
write([1, 2, 3] * NaN);
write([1, 2, 3] * +0);
write([1, 2, 3] * -0);
write([1, 2, 3] * 0);
write([1, 2, 3] * 0.0);
write([1, 2, 3] * -0.0);
write([1, 2, 3] * +0.0);
write([1, 2, 3] * 1);
write([1, 2, 3] * 10);
write([1, 2, 3] * 10.0);
write([1, 2, 3] * 10.1);
write([1, 2, 3] * -1);
write([1, 2, 3] * -10);
write([1, 2, 3] * -10.0);
write([1, 2, 3] * -10.1);
write([1, 2, 3] * Number.MAX_VALUE);
write([1, 2, 3] * Number.MIN_VALUE);
write([1, 2, 3] * Number.NaN);
write([1, 2, 3] * Number.POSITIVE_INFINITY);
write([1, 2, 3] * Number.NEGATIVE_INFINITY);
write([1, 2, 3] * new Number(NaN));
write([1, 2, 3] * new Number(+0));
write([1, 2, 3] * new Number(-0));
write([1, 2, 3] * new Number(0));
write([1, 2, 3] * new Number(0.0));
write([1, 2, 3] * new Number(-0.0));
write([1, 2, 3] * new Number(+0.0));
write([1, 2, 3] * new Number(1));
write([1, 2, 3] * new Number(10));
write([1, 2, 3] * new Number(10.0));
write([1, 2, 3] * new Number(10.1));
write([1, 2, 3] * new Number(-1));
write([1, 2, 3] * new Number(-10));
write([1, 2, 3] * new Number(-10.0));
write([1, 2, 3] * new Number(-10.1));
write([1, 2, 3] * new Number(Number.MAX_VALUE));
write([1, 2, 3] * new Number(Number.MIN_VALUE));
write([1, 2, 3] * new Number(Number.NaN));
write([1, 2, 3] * new Number(Number.POSITIVE_INFINITY));
write([1, 2, 3] * new Number(Number.NEGATIVE_INFINITY));
write([1, 2, 3] * '');
write([1, 2, 3] * 0xa);
write([1, 2, 3] * 04);
write([1, 2, 3] * 'hello');
write([1, 2, 3] * 'hel' + 'lo');
write([1, 2, 3] * String(''));
write([1, 2, 3] * String('hello'));
write([1, 2, 3] * String('h' + 'ello'));
write([1, 2, 3] * new String(''));
write([1, 2, 3] * new String('hello'));
write([1, 2, 3] * new String('he' + 'llo'));
write([1, 2, 3] * new Object());
write([1, 2, 3] * new Object());
write([1, 2, 3] * [1, 2, 3]);
write([1, 2, 3] * [1 ,2 , 3]);
write([1, 2, 3] * new Array(3));
write([1, 2, 3] * Array(3));
write([1, 2, 3] * new Array(1 ,2 ,3));
write([1, 2, 3] * Array(1));
write([1, 2, 3] * foo);
write([1 ,2 , 3] * undefined);
write([1 ,2 , 3] * null);
write([1 ,2 , 3] * true);
write([1 ,2 , 3] * false);
write([1 ,2 , 3] * Boolean(true));
write([1 ,2 , 3] * Boolean(false));
write([1 ,2 , 3] * new Boolean(true));
write([1 ,2 , 3] * new Boolean(false));
write([1 ,2 , 3] * NaN);
write([1 ,2 , 3] * +0);
write([1 ,2 , 3] * -0);
write([1 ,2 , 3] * 0);
write([1 ,2 , 3] * 0.0);
write([1 ,2 , 3] * -0.0);
write([1 ,2 , 3] * +0.0);
write([1 ,2 , 3] * 1);
write([1 ,2 , 3] * 10);
write([1 ,2 , 3] * 10.0);
write([1 ,2 , 3] * 10.1);
write([1 ,2 , 3] * -1);
write([1 ,2 , 3] * -10);
write([1 ,2 , 3] * -10.0);
write([1 ,2 , 3] * -10.1);
write([1 ,2 , 3] * Number.MAX_VALUE);
write([1 ,2 , 3] * Number.MIN_VALUE);
write([1 ,2 , 3] * Number.NaN);
write([1 ,2 , 3] * Number.POSITIVE_INFINITY);
write([1 ,2 , 3] * Number.NEGATIVE_INFINITY);
write([1 ,2 , 3] * new Number(NaN));
write([1 ,2 , 3] * new Number(+0));
write([1 ,2 , 3] * new Number(-0));
write([1 ,2 , 3] * new Number(0));
write([1 ,2 , 3] * new Number(0.0));
write([1 ,2 , 3] * new Number(-0.0));
write([1 ,2 , 3] * new Number(+0.0));
write([1 ,2 , 3] * new Number(1));
write([1 ,2 , 3] * new Number(10));
write([1 ,2 , 3] * new Number(10.0));
write([1 ,2 , 3] * new Number(10.1));
write([1 ,2 , 3] * new Number(-1));
write([1 ,2 , 3] * new Number(-10));
write([1 ,2 , 3] * new Number(-10.0));
write([1 ,2 , 3] * new Number(-10.1));
write([1 ,2 , 3] * new Number(Number.MAX_VALUE));
write([1 ,2 , 3] * new Number(Number.MIN_VALUE));
write([1 ,2 , 3] * new Number(Number.NaN));
write([1 ,2 , 3] * new Number(Number.POSITIVE_INFINITY));
write([1 ,2 , 3] * new Number(Number.NEGATIVE_INFINITY));
write([1 ,2 , 3] * '');
write([1 ,2 , 3] * 0xa);
write([1 ,2 , 3] * 04);
write([1 ,2 , 3] * 'hello');
write([1 ,2 , 3] * 'hel' + 'lo');
write([1 ,2 , 3] * String(''));
write([1 ,2 , 3] * String('hello'));
write([1 ,2 , 3] * String('h' + 'ello'));
write([1 ,2 , 3] * new String(''));
write([1 ,2 , 3] * new String('hello'));
write([1 ,2 , 3] * new String('he' + 'llo'));
write([1 ,2 , 3] * new Object());
write([1 ,2 , 3] * new Object());
write([1 ,2 , 3] * [1, 2, 3]);
write([1 ,2 , 3] * [1 ,2 , 3]);
write([1 ,2 , 3] * new Array(3));
write([1 ,2 , 3] * Array(3));
write([1 ,2 , 3] * new Array(1 ,2 ,3));
write([1 ,2 , 3] * Array(1));
write([1 ,2 , 3] * foo);
write(new Array(3) * undefined);
write(new Array(3) * null);
write(new Array(3) * true);
write(new Array(3) * false);
write(new Array(3) * Boolean(true));
write(new Array(3) * Boolean(false));
write(new Array(3) * new Boolean(true));
write(new Array(3) * new Boolean(false));
write(new Array(3) * NaN);
write(new Array(3) * +0);
write(new Array(3) * -0);
write(new Array(3) * 0);
write(new Array(3) * 0.0);
write(new Array(3) * -0.0);
write(new Array(3) * +0.0);
write(new Array(3) * 1);
write(new Array(3) * 10);
write(new Array(3) * 10.0);
write(new Array(3) * 10.1);
write(new Array(3) * -1);
write(new Array(3) * -10);
write(new Array(3) * -10.0);
write(new Array(3) * -10.1);
write(new Array(3) * Number.MAX_VALUE);
write(new Array(3) * Number.MIN_VALUE);
write(new Array(3) * Number.NaN);
write(new Array(3) * Number.POSITIVE_INFINITY);
write(new Array(3) * Number.NEGATIVE_INFINITY);
write(new Array(3) * new Number(NaN));
write(new Array(3) * new Number(+0));
write(new Array(3) * new Number(-0));
write(new Array(3) * new Number(0));
write(new Array(3) * new Number(0.0));
write(new Array(3) * new Number(-0.0));
write(new Array(3) * new Number(+0.0));
write(new Array(3) * new Number(1));
write(new Array(3) * new Number(10));
write(new Array(3) * new Number(10.0));
write(new Array(3) * new Number(10.1));
write(new Array(3) * new Number(-1));
write(new Array(3) * new Number(-10));
write(new Array(3) * new Number(-10.0));
write(new Array(3) * new Number(-10.1));
write(new Array(3) * new Number(Number.MAX_VALUE));
write(new Array(3) * new Number(Number.MIN_VALUE));
write(new Array(3) * new Number(Number.NaN));
write(new Array(3) * new Number(Number.POSITIVE_INFINITY));
write(new Array(3) * new Number(Number.NEGATIVE_INFINITY));
write(new Array(3) * '');
write(new Array(3) * 0xa);
write(new Array(3) * 04);
write(new Array(3) * 'hello');
write(new Array(3) * 'hel' + 'lo');
write(new Array(3) * String(''));
write(new Array(3) * String('hello'));
write(new Array(3) * String('h' + 'ello'));
write(new Array(3) * new String(''));
write(new Array(3) * new String('hello'));
write(new Array(3) * new String('he' + 'llo'));
write(new Array(3) * new Object());
write(new Array(3) * new Object());
write(new Array(3) * [1, 2, 3]);
write(new Array(3) * [1 ,2 , 3]);
write(new Array(3) * new Array(3));
write(new Array(3) * Array(3));
write(new Array(3) * new Array(1 ,2 ,3));
write(new Array(3) * Array(1));
write(new Array(3) * foo);
write(Array(3) * undefined);
write(Array(3) * null);
write(Array(3) * true);
write(Array(3) * false);
write(Array(3) * Boolean(true));
write(Array(3) * Boolean(false));
write(Array(3) * new Boolean(true));
write(Array(3) * new Boolean(false));
write(Array(3) * NaN);
write(Array(3) * +0);
write(Array(3) * -0);
write(Array(3) * 0);
write(Array(3) * 0.0);
write(Array(3) * -0.0);
write(Array(3) * +0.0);
write(Array(3) * 1);
write(Array(3) * 10);
write(Array(3) * 10.0);
write(Array(3) * 10.1);
write(Array(3) * -1);
write(Array(3) * -10);
write(Array(3) * -10.0);
write(Array(3) * -10.1);
write(Array(3) * Number.MAX_VALUE);
write(Array(3) * Number.MIN_VALUE);
write(Array(3) * Number.NaN);
write(Array(3) * Number.POSITIVE_INFINITY);
write(Array(3) * Number.NEGATIVE_INFINITY);
write(Array(3) * new Number(NaN));
write(Array(3) * new Number(+0));
write(Array(3) * new Number(-0));
write(Array(3) * new Number(0));
write(Array(3) * new Number(0.0));
write(Array(3) * new Number(-0.0));
write(Array(3) * new Number(+0.0));
write(Array(3) * new Number(1));
write(Array(3) * new Number(10));
write(Array(3) * new Number(10.0));
write(Array(3) * new Number(10.1));
write(Array(3) * new Number(-1));
write(Array(3) * new Number(-10));
write(Array(3) * new Number(-10.0));
write(Array(3) * new Number(-10.1));
write(Array(3) * new Number(Number.MAX_VALUE));
write(Array(3) * new Number(Number.MIN_VALUE));
write(Array(3) * new Number(Number.NaN));
write(Array(3) * new Number(Number.POSITIVE_INFINITY));
write(Array(3) * new Number(Number.NEGATIVE_INFINITY));
write(Array(3) * '');
write(Array(3) * 0xa);
write(Array(3) * 04);
write(Array(3) * 'hello');
write(Array(3) * 'hel' + 'lo');
write(Array(3) * String(''));
write(Array(3) * String('hello'));
write(Array(3) * String('h' + 'ello'));
write(Array(3) * new String(''));
write(Array(3) * new String('hello'));
write(Array(3) * new String('he' + 'llo'));
write(Array(3) * new Object());
write(Array(3) * new Object());
write(Array(3) * [1, 2, 3]);
write(Array(3) * [1 ,2 , 3]);
write(Array(3) * new Array(3));
write(Array(3) * Array(3));
write(Array(3) * new Array(1 ,2 ,3));
write(Array(3) * Array(1));
write(Array(3) * foo);
write(new Array(1 ,2 ,3) * undefined);
write(new Array(1 ,2 ,3) * null);
write(new Array(1 ,2 ,3) * true);
write(new Array(1 ,2 ,3) * false);
write(new Array(1 ,2 ,3) * Boolean(true));
write(new Array(1 ,2 ,3) * Boolean(false));
write(new Array(1 ,2 ,3) * new Boolean(true));
write(new Array(1 ,2 ,3) * new Boolean(false));
write(new Array(1 ,2 ,3) * NaN);
write(new Array(1 ,2 ,3) * +0);
write(new Array(1 ,2 ,3) * -0);
write(new Array(1 ,2 ,3) * 0);
write(new Array(1 ,2 ,3) * 0.0);
write(new Array(1 ,2 ,3) * -0.0);
write(new Array(1 ,2 ,3) * +0.0);
write(new Array(1 ,2 ,3) * 1);
write(new Array(1 ,2 ,3) * 10);
write(new Array(1 ,2 ,3) * 10.0);
write(new Array(1 ,2 ,3) * 10.1);
write(new Array(1 ,2 ,3) * -1);
write(new Array(1 ,2 ,3) * -10);
write(new Array(1 ,2 ,3) * -10.0);
write(new Array(1 ,2 ,3) * -10.1);
write(new Array(1 ,2 ,3) * Number.MAX_VALUE);
write(new Array(1 ,2 ,3) * Number.MIN_VALUE);
write(new Array(1 ,2 ,3) * Number.NaN);
write(new Array(1 ,2 ,3) * Number.POSITIVE_INFINITY);
write(new Array(1 ,2 ,3) * Number.NEGATIVE_INFINITY);
write(new Array(1 ,2 ,3) * new Number(NaN));
write(new Array(1 ,2 ,3) * new Number(+0));
write(new Array(1 ,2 ,3) * new Number(-0));
write(new Array(1 ,2 ,3) * new Number(0));
write(new Array(1 ,2 ,3) * new Number(0.0));
write(new Array(1 ,2 ,3) * new Number(-0.0));
write(new Array(1 ,2 ,3) * new Number(+0.0));
write(new Array(1 ,2 ,3) * new Number(1));
write(new Array(1 ,2 ,3) * new Number(10));
write(new Array(1 ,2 ,3) * new Number(10.0));
write(new Array(1 ,2 ,3) * new Number(10.1));
write(new Array(1 ,2 ,3) * new Number(-1));
write(new Array(1 ,2 ,3) * new Number(-10));
write(new Array(1 ,2 ,3) * new Number(-10.0));
write(new Array(1 ,2 ,3) * new Number(-10.1));
write(new Array(1 ,2 ,3) * new Number(Number.MAX_VALUE));
write(new Array(1 ,2 ,3) * new Number(Number.MIN_VALUE));
write(new Array(1 ,2 ,3) * new Number(Number.NaN));
write(new Array(1 ,2 ,3) * new Number(Number.POSITIVE_INFINITY));
write(new Array(1 ,2 ,3) * new Number(Number.NEGATIVE_INFINITY));
write(new Array(1 ,2 ,3) * '');
write(new Array(1 ,2 ,3) * 0xa);
write(new Array(1 ,2 ,3) * 04);
write(new Array(1 ,2 ,3) * 'hello');
write(new Array(1 ,2 ,3) * 'hel' + 'lo');
write(new Array(1 ,2 ,3) * String(''));
write(new Array(1 ,2 ,3) * String('hello'));
write(new Array(1 ,2 ,3) * String('h' + 'ello'));
write(new Array(1 ,2 ,3) * new String(''));
write(new Array(1 ,2 ,3) * new String('hello'));
write(new Array(1 ,2 ,3) * new String('he' + 'llo'));
write(new Array(1 ,2 ,3) * new Object());
write(new Array(1 ,2 ,3) * new Object());
write(new Array(1 ,2 ,3) * [1, 2, 3]);
write(new Array(1 ,2 ,3) * [1 ,2 , 3]);
write(new Array(1 ,2 ,3) * new Array(3));
write(new Array(1 ,2 ,3) * Array(3));
write(new Array(1 ,2 ,3) * new Array(1 ,2 ,3));
write(new Array(1 ,2 ,3) * Array(1));
write(new Array(1 ,2 ,3) * foo);
write(Array(1) * undefined);
write(Array(1) * null);
write(Array(1) * true);
write(Array(1) * false);
write(Array(1) * Boolean(true));
write(Array(1) * Boolean(false));
write(Array(1) * new Boolean(true));
write(Array(1) * new Boolean(false));
write(Array(1) * NaN);
write(Array(1) * +0);
write(Array(1) * -0);
write(Array(1) * 0);
write(Array(1) * 0.0);
write(Array(1) * -0.0);
write(Array(1) * +0.0);
write(Array(1) * 1);
write(Array(1) * 10);
write(Array(1) * 10.0);
write(Array(1) * 10.1);
write(Array(1) * -1);
write(Array(1) * -10);
write(Array(1) * -10.0);
write(Array(1) * -10.1);
write(Array(1) * Number.MAX_VALUE);
write(Array(1) * Number.MIN_VALUE);
write(Array(1) * Number.NaN);
write(Array(1) * Number.POSITIVE_INFINITY);
write(Array(1) * Number.NEGATIVE_INFINITY);
write(Array(1) * new Number(NaN));
write(Array(1) * new Number(+0));
write(Array(1) * new Number(-0));
write(Array(1) * new Number(0));
write(Array(1) * new Number(0.0));
write(Array(1) * new Number(-0.0));
write(Array(1) * new Number(+0.0));
write(Array(1) * new Number(1));
write(Array(1) * new Number(10));
write(Array(1) * new Number(10.0));
write(Array(1) * new Number(10.1));
write(Array(1) * new Number(-1));
write(Array(1) * new Number(-10));
write(Array(1) * new Number(-10.0));
write(Array(1) * new Number(-10.1));
write(Array(1) * new Number(Number.MAX_VALUE));
write(Array(1) * new Number(Number.MIN_VALUE));
write(Array(1) * new Number(Number.NaN));
write(Array(1) * new Number(Number.POSITIVE_INFINITY));
write(Array(1) * new Number(Number.NEGATIVE_INFINITY));
write(Array(1) * '');
write(Array(1) * 0xa);
write(Array(1) * 04);
write(Array(1) * 'hello');
write(Array(1) * 'hel' + 'lo');
write(Array(1) * String(''));
write(Array(1) * String('hello'));
write(Array(1) * String('h' + 'ello'));
write(Array(1) * new String(''));
write(Array(1) * new String('hello'));
write(Array(1) * new String('he' + 'llo'));
write(Array(1) * new Object());
write(Array(1) * new Object());
write(Array(1) * [1, 2, 3]);
write(Array(1) * [1 ,2 , 3]);
write(Array(1) * new Array(3));
write(Array(1) * Array(3));
write(Array(1) * new Array(1 ,2 ,3));
write(Array(1) * Array(1));
write(Array(1) * foo);
write(foo * undefined);
write(foo * null);
write(foo * true);
write(foo * false);
write(foo * Boolean(true));
write(foo * Boolean(false));
write(foo * new Boolean(true));
write(foo * new Boolean(false));
write(foo * NaN);
write(foo * +0);
write(foo * -0);
write(foo * 0);
write(foo * 0.0);
write(foo * -0.0);
write(foo * +0.0);
write(foo * 1);
write(foo * 10);
write(foo * 10.0);
write(foo * 10.1);
write(foo * -1);
write(foo * -10);
write(foo * -10.0);
write(foo * -10.1);
write(foo * Number.MAX_VALUE);
write(foo * Number.MIN_VALUE);
write(foo * Number.NaN);
write(foo * Number.POSITIVE_INFINITY);
write(foo * Number.NEGATIVE_INFINITY);
write(foo * new Number(NaN));
write(foo * new Number(+0));
write(foo * new Number(-0));
write(foo * new Number(0));
write(foo * new Number(0.0));
write(foo * new Number(-0.0));
write(foo * new Number(+0.0));
write(foo * new Number(1));
write(foo * new Number(10));
write(foo * new Number(10.0));
write(foo * new Number(10.1));
write(foo * new Number(-1));
write(foo * new Number(-10));
write(foo * new Number(-10.0));
write(foo * new Number(-10.1));
write(foo * new Number(Number.MAX_VALUE));
write(foo * new Number(Number.MIN_VALUE));
write(foo * new Number(Number.NaN));
write(foo * new Number(Number.POSITIVE_INFINITY));
write(foo * new Number(Number.NEGATIVE_INFINITY));
write(foo * '');
write(foo * 0xa);
write(foo * 04);
write(foo * 'hello');
write(foo * 'hel' + 'lo');
write(foo * String(''));
write(foo * String('hello'));
write(foo * String('h' + 'ello'));
write(foo * new String(''));
write(foo * new String('hello'));
write(foo * new String('he' + 'llo'));
write(foo * new Object());
write(foo * new Object());
write(foo * [1, 2, 3]);
write(foo * [1 ,2 , 3]);
write(foo * new Array(3));
write(foo * Array(3));
write(foo * new Array(1 ,2 ,3));
write(foo * Array(1));
write(foo * foo);
